.. |Show_ic| image:: Img/Show_ic.png .. _Руководство по инсталляции сервиса системных настроек Vault: ############################################################ Руководство по инсталляции сервиса системных настроек Vault ############################################################ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Назначение и общий функционал работы с Vault ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Сервис системных настроек Vault предназначен для безопасного управления конфиденциальной информацией в современных архитектурах приложений. Vault используется Системой в качестве специального сервера по хранению секретных данных. Вместо того, чтобы хранить данные в конфигурации и/или в переменных окружения, Система запрашивает специальное хранилище (Vault) предоставить тот или иной параметр. Более подробную информацию о сервисе системных настроек Vault можно посмотреть здесь: https://www.vaultproject.io/. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Установка и первичная настройка Vault ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Подробная информация об установке Vault находится здесь: https://learn.hashicorp.com/vault/getting-started/install. Следуя шагам Руководства https://learn.hashicorp.com/vault/getting-started/install, можно получить полную информацию о настройке и работе с Vault. """"""""""""""""" Установка Vault """"""""""""""""" Перед установкой Vault необходимо установить Docker. Подробнее об установке и настройке Docker можно посмотреть здесь: https://docs.docker.com/get-started/. Для установки Vault нужно скачать образ Vault из Docker, выполнив в командной строке команду: :: docker pull vault Затем следует запустить контейнер с Vault в режиме сервера, выполнив команду: :: docker run --cap-add=IPC_LOCK -d --name=vault -p 8200:8200 -e 'VAULT_LOCAL_CONFIG={"backend": {"file": {"path": "/vault/file"}}, "default_lease_ttl": "168h", "max_lease_ttl": "720h", "listener":{"tcp":{"address":"0.0.0.0:8200","tls_disable":1}},"ui":true}' vault server После выполнения этой команды Vault будет доступен на локальной машине по адресу http://localhost:8200. """""""""""""""""""""""""" Первичная настройка Vault """""""""""""""""""""""""" Для первичной настройки Vault нужно сначала открыть интерфейс Vault в браузере по ссылке http://localhost:8200. При первом запуске Vault предложит создать ключи доступа к хранилищу (:numref:`16Pic1`). Необходимо указать два значения: *Key shares* Общее количество создаваемых ключей. *Key threshold* Количество ключей, которое нужно ввести для разблокировки хранилища. То есть для разблокировки хранилища необходимо ввести "Key threshold" ключей из "Key shares" созданных ключей. .. _16Pic1: .. figure:: Img/Keys.png :scale: 40 % :align: center *Создание ключей для доступа к хранилищу* Затем необходимо нажать на кнопку "Initialize" (:numref:`16Pic1`). После нажатия на кнопку "Initialize" откроется форма с созданными ключами и токеном для входа (:numref:`16Pic2`). .. _16Pic2: .. figure:: Img/Keys1.png :scale: 40 % :align: center *Созданные ключи и токен* Можно посмотреть созданные ключи и токен, нажав на кнопку |Show_ic| "Показать" (:numref:`16Pic2`). .. _16Pic3: .. figure:: Img/Keys2.png :scale: 40 % :align: center *Сгененированный токен* Ключи и токен необходимо сохранить. Для сохранения ключей и токена можно скачать файл с ключами, нажав на ссылку "Download keys" (:numref:`16Pic4`). .. _16Pic4: .. figure:: Img/Keys3.png :scale: 40 % :align: center *Ссылка "Download keys" для сохранения файла с ключами и токеном* После нажатия на ссылку "Download keys" откроется форма для сохранения файла, в которой необходимо выбрать пункт "Сохранить файл" и нажать на кнопку "Ок" (:numref:`16Pic5`). .. _16Pic5: .. figure:: Img/Keys4.png :scale: 40 % :align: center *Сохранение файла с ключами и токеном* Пример файла: :: { "keys": [ "276145fff95fa8be222101f9e0394f97e1feaf3a5c46f08dab07cc335bc1c2c999", "dba61c998d0e1f3c7d780c02c480e666ba7ca13a308cac59ef1b624b5e3a32ed48", "b21363f9051de24336430d3dac1c06c792b12b82d550cda6489f2faaa641f7cdf0", "570659b121e2ecf8ed4becc9170def4915e8a7c3c59bcebb6945ae3ca587e886a5", "eba1bd6e8ca225d9839ac70f91c761bfda6d521b905f57605d3dc2362774339451", "f145a3af32776ed08aa8c19ab1ed68871cb1016e5767f5d7d8f36db679cdf358bd" ], "keys_base64": [ "J2FF//lfqL4iIQH54DlPl+H+rzpcRvCNqwfMM1vBwsmZ", "26YcmY0OHzx9eAwCxIDmZrp8oTowjKxZ7xtiS146Mu1I", "shNj+QUd4kM2Qw09rBwGx5KxK4LVUM2mSJ8vqqZB983w", "VwZZsSHi7PjtS+zJFw3vSRXop8PFm867aUWuPKWH6Ial", "66G9boyiJdmDmscPkcdhv9ptUhuQX1dgXT3CNid0M5RR", "8UWjrzJ3btCKqMGase1ohxyxAW5XZ/XX2PNttnnN81i9" ], "root_token": "s.RoEWWpedgmLegifVCjpvz8n9" } Здесь: * "keys" - созданные ключи. * "root_token" - созданный токен. Для продолжения настройки необходимо нажать на кнопку "Continue to Unseal" (:numref:`16Pic5`). После этого появится форма "Unseal Vault" (:numref:`16Pic6`), в поле "Master Key Portion" которой необходимо ввести то количество ключей, которое было указано в поле "Key threshold" на форме старта инициализации Vault (:numref:`16Pic1`). .. _16Pic6: .. figure:: Img/Vault.png :scale: 40 % :align: center *Форма "Unseal Vault"* После каждого ввода ключа в поле "Master Key Portion" необходимо нажимать кнопку "Unseal" (:numref:`16Pic6`). После того как необходимое количество ключей введено, появится форма "Sign in to Vault", в поле "Token" которой необходимо ввести токен, а затем нажать на этой форме кнопку "Sign in" (:numref:`16Pic7`). .. _16Pic7: .. figure:: Img/Vault1.png :scale: 80 % :align: center *Форма "Sign in to Vault"* После чего откроется cервис системных настроек Vault (:numref:`16Pic8`). .. _16Pic8: .. figure:: Img/Vault2.png :scale: 80 % :align: center *Cервис системных настроек Vault* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Создание нового хранилища и наборов настроек ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ """"""""""""""""""""""""""" Создание нового хранилища """"""""""""""""""""""""""" На вкладке "Secrets" необходимо создать новое хранилище. Для этого нужно нажать кнопку "Enable new engine" (:numref:`16Pic8`). После этого откроется форма "Enable a Secrets Engine" для выбора типа хранилища (:numref:`16Pic9`). .. _16Pic9: .. figure:: Img/Vault3.png :scale: 80 % :align: center *Выбор типа хранилища* Необходимо выбрать тип "KV" (key value) и нажать на кнопку "Next" (:numref:`16Pic9`). После этого откроется форма "Enable KV Secrets Engine" (:numref:`16Pic10`), в которой необходимо заполнить следующие поля: *Path* Указывается название хранилища. *Versions* Указывается номер версии хранилища. .. _16Pic10: .. figure:: Img/Vault4.png :scale: 80 % :align: center *Форма "Enable KV Secrets Engine"* По кнопке "Metod Options" разворачивается форма с дополнительными параметрами (:numref:`16Pic11`). .. _16Pic11: .. figure:: Img/Vault5.png :scale: 80 % :align: center *Дополнительные параметры* Можно оставить значения всех полей на форме "Metod Options" без изменений. Более подробно об опциях можно посмотреть здесь: https://www.vaultproject.io/. Для завершения создания хранилища необходимо нажать на кнопку "Enable Engine" (:numref:`16Pic10`). После этого откроется созданное хранилище (:numref:`16Pic12`). .. _16Pic12: .. figure:: Img/Vault6.png :scale: 80 % :align: center *Новое хранилище* """""""""""""""""""""""""" Создание набора настроек """""""""""""""""""""""""" Настройки создаются и хранятся внутри набора настроек (secrets). Это сделано для удобства объединения настроек по определенному принципу. Таким образом, сначала необходимо создать набор настроек. Создание набора настроек выполняется по кнопке "Create secret" (:numref:`16Pic12`). После нажатия на эту кнопку откроется форма "Create secret" (:numref:`16Pic13`). .. _16Pic13: .. figure:: Img/Vault7.png :scale: 80 % :align: center *Создание набора настроек* В этой форме необходимо заполнить следующие поля: *Parh for this secret* Указывается название набора настроек. *Maximum Number of Versions* Указывается количество сохраняемых версий набора настроек, до каждой из которых можно будет "откатиться" при необходимости. *Version data* Здесь по кнопке "Add" добавляются настройки. У каждой новой настройки необходимо заполнить поля (:numref:`16Pic14`): *key* Название настройки. *value* Значение настройки. .. _16Pic14: .. figure:: Img/Vault8.png :scale: 80 % :align: center *Пример заполнения полей настройки* После того как все настройки добавлены, для сохранения текущей версии набора настроек необходимо нажать кнопку "Save" (:numref:`16Pic14`). После этого текущая версия набора настроек будет сохранена (:numref:`16Pic15`). .. _16Pic15: .. figure:: Img/Vault9.png :scale: 80 % :align: center *Сохраненная версия набора настроек* Созданные настройки можно посмотреть в виде строки JSON. Для этого необходимо включить переключатель "JSON" (:numref:`16Pic15`). После этого созданные настройки отобразятся в виде строки JSON (:numref:`16Pic16`). .. _16Pic16: .. figure:: Img/Vault10.png :scale: 80 % :align: center *Настройки в виде строки JSON* Для возврата внешнего вида настроек в виде набора полей необходимо выключить переключатель "JSON" (:numref:`16Pic16`). .. note:: Сохраненные версии набора настроек изменить нельзя. Для внесения изменений в набор настроек необходимо создать новую версию данного набора. Аналогичным образом создается необходимое количество наборов настроек. """"""""""""""""""""""""""""""""""""""" Создание новой версии набора настроек """"""""""""""""""""""""""""""""""""""" Создание новых настроек, изменение или удаление существующих настроек выполняется в новой версии набора настроек. Создание новой версии набора настроек выполняется по кнопке "Create new version" (:numref:`16Pic17`). .. _16Pic17: .. figure:: Img/Vault11.png :scale: 80 % :align: center *Кнопка "Create new version"* После нажатия на эту кнопку будет создана и сразу же откроется на просмотр и изменение новая версия набора настроек (:numref:`16Pic18`). .. _16Pic18: .. figure:: Img/Vault12.png :scale: 80 % :align: center *Новая версия набора настроек до внесения изменений* В эту версию нужно внести необходимые изменения. Например, по кнопке "Add" можно добавить еще одну настройку. Для сохранения изменений следует нажать на кнопку "Save" (:numref:`16Pic19`). .. _16Pic19: .. figure:: Img/Vault13.png :scale: 80 % :align: center *Изменения в новой версии набора настроек* В результате в новую версию набора настроек будет добавлена еще одна настройка (:numref:`16Pic20`). .. _16Pic20: .. figure:: Img/Vault14.png :scale: 80 % :align: center *Новая версия набора настроек* Отображение настроек в виде строки JSON также покажет новую настройку (:numref:`16Pic21`). .. _16Pic21: .. figure:: Img/Vault15.png :scale: 80 % :align: center *Настройки в виде строки JSON в последней сохраненной версии* Изменения в новых версиях набора настроек можно выполнять и в режиме строки JSON (:numref:`16Pic22`). .. _16Pic22: .. figure:: Img/Vault16.png :scale: 80 % :align: center *Выполнение изменений версии в режиме строки JSON* После сохранения текущей версии набора настроек все изменения, выполненные в режиме строки JSON, появятся в последней сохраненной версии набора настроек (:numref:`16Pic23`, :numref:`16Pic24`). .. _16Pic23: .. figure:: Img/Vault17.png :scale: 80 % :align: center *Настройки в виде строки JSON в последней сохраненной версии* .. _16Pic24: .. figure:: Img/Vault18.png :scale: 80 % :align: center *Настройки в виде набора полей в последней сохраненной версии*